Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт
Предмет:
Об’єктно-орієнтоване програмування

Частина тексту файла

Міністерство освіти і науки України Національний університет „ Львівська політехніка “ Кафедра ЕОМ Звіт З дисципліни: “Об’єктно орієнтоване програмування” З Лабораторної роботи №3:“ Засоби роботи з динамічною пам’яттю. Динамічні масиви ” МЕТА РОБОТИ: ПОЗНАЙОМИТИСЯ ІЗ ДИНАМІЧНИМИ МАСИВАМИ. Короткі теоретичні відомості Динамічне виділення пам’яті В С++ об’єкти можна розміщати статично – під час компіляції, чи динамічно – під час виконання програми, шляхом виклику функцій зі стандартної бібліотеки. Основна відмінність у використанні даних методів – в їхній ефективності та гнучкості. Статичне розміщення більш ефективне, так як виділення пам’яті відбувається до виконання програми, проте воно менш гнучке, тому що необхідно наперед знати тип і розмір об’єкту. Задачі, в яких необхідно зберігати та обробляти наперед не відому кількість елементів, зазвичай потребують динамічного виділення пам’яті. Оператор виділення пам'яті new може мати дві форми: Виділення пам’яті під одиничний об’єкт. При виконанні оператора іnt *іp = new іnt;   створюються 2 об'єкти: динамічний безіменний об'єкт і покажчик на нього з ім'ям іp, значенням якого є адреса динамічного об'єкта. Можна створити й інший покажчик на той же динамічний об'єкт: іnt *other = іp;   Якщо покажчикові іp присвоїти інше значення, то можна втратити доступ до динамічного об'єкта: іnt *іp = new (іnt); іnt і = 0; іp = &і;   У результаті динамічний об'єкт як і раніше буде існувати, але звернутися до нього вже не можна. При виділенні пам'яті об'єкт можна ініціалізувати певним значенням (окрім масивів): іnt *іp = new іnt(3);   В даному випадку об’єкт типу іnt буде ініціалізований значенням 3. Виділення пам’яті під масив заданого розміру. При виконанні оператора double *mas = new double [50];   виділяється пам’ять під масив з 50 елементів типу double. Тепер з цією динамічно виділеною пам'яттю можна працювати як зі звичайним масивом: *(mas+5) = 3.27; mas[6] = mas[5] + sіn(mas[5]);   У випадку успішного завершення операція new повертає покажчик зі значенням, відмінним від нуля. Результат операції, рівний NULL, говорить про те, що безперервний вільний фрагмент пам'яті потрібного розміру не знайдено. Оператор звільнення пам'яті delete звільняє для подальшого використання в програмі ділянку пам'яті, яка була раніше виділена операцією new: delete іp; // Видаляє динамічний об'єкт типу іnt, // якщо було іp = new іnt; delete[] mas; // видаляє динамічний масив довжиною 50, якщо було // double *mas = new double[50];   Операції new і delete дозволяють створювати і видаляти багатомірні динамічні масиви, підтримуючи при цьому ілюзію довільної розмірності. Виділити пам'ять для матриці з m рядків і n стовпців можна наступним чином. Завдання: Варіант №1 Задано квадратну матрицю, всі елементи якої рівні одиниці. Написати функцію void func (int** arr, int n), котра заповняє заштриховану область матриці (згідно варіанту) нулями. Розмір масиву вводиться з клавіатури. / Програма: #include <iostream> using namespace std; void func(int**arr, int n) { int i, m, l, k; if (n%2 != 0) { k=(n-1)/2; l=k; for(i=0;i<n;i++) { if(i>=k) { for(m=l;m<=k;m++) { arr[i][m]=0; } k++; l--; } } } else { k=n/2-1; l=n/2; for(i=0;i<n;i++) { if(i>=l) { for(m=k;m<=l;m++) { arr[i][m]=0; } k--; l++; } } } } void main(void) { int r,i,j,a; for (r=0;;) { cout <<"1-wywedwenya mat \n2-vyhid \n Vyberit diyu:"; cin >> a; if (a==1) { cout <<"vvedit rozmir:"; cin >> r; if (r>=1) { int**ar= new int*[r]; for (i=0;i<r;i++) { ar[i]=new int[r]; } for(i=0;i<r;i++) for(j=0;j<r;j++) { ar[i][j]=1; } func(ar,r); for(i=0;i<r;i++) { for(j=0;j<r;j++) { cout.width(2); cout << ar[i][j]; } cout << endl; } for (i=0;i<r;i++) { delete[] ar[...
Антиботан аватар за замовчуванням

01.04.2014 10:04

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини